package co.baiku.boot.request;

import co.baiku.boot.common.tools.StringTools;
import co.baiku.boot.common.validate.ValidationException;
import co.baiku.boot.common.validate.ValidationResult;

import java.util.HashMap;
import java.util.Map;

/**
 * 订单查询请求
 */
public class WeixinOrderQueryRequest implements WeixinPayRequest {
    /**
     * 微信的订单号，建议优先使用
     */
    private String transaction_id;
    /**
     * 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。 详见商户订单号
     */
    private String out_trade_no;

    public WeixinOrderQueryRequest() {
    }

    public WeixinOrderQueryRequest(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    @Override
    public Map<String, String> toMap() {
        Map<String, String> data = new HashMap<>();
        if (StringTools.isNotBlank(transaction_id)) {
            data.put("transaction_id", transaction_id);
        }
        if (StringTools.isNotBlank(out_trade_no)) {
            data.put("out_trade_no", out_trade_no);
        }
        if (data.isEmpty()) {
            throw new ValidationException(new ValidationResult(false, "微信的订单号和商户系统内部订单号至少一项不为空"));
        }
        return data;
    }
}
